import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
import os
os.listdir(r"C:\Users\lucas\general\cursos\09-python\01_data_analyst_python\01-project_NY_uber_stats\Datasets")
['other-American_B01362.csv', 'other-Carmel_B00256.csv', 'other-Dial7_B00887.csv', 'other-Diplo_B01196.csv', 'other-Federal_02216.csv', 'other-FHV-services_jan-aug-2015.csv', 'other-Firstclass_B01536.csv', 'other-Highclass_B01717.csv', 'other-Lyft_B02510.csv', 'other-Prestige_B01338.csv', 'other-Skyline_B00111.csv', 'Uber-Jan-Feb-FOIL.csv', 'uber-raw-data-apr14.csv', 'uber-raw-data-aug14.csv', 'uber-raw-data-janjune-15.csv', 'uber-raw-data-janjune-15_sample.csv', 'uber-raw-data-jul14.csv', 'uber-raw-data-jun14.csv', 'uber-raw-data-may14.csv', 'uber-raw-data-sep14.csv']
pd.read_csv(r"C:\Users\lucas\general\cursos\09-python\01_data_analyst_python\01-project_NY_uber_stats\Datasets/uber-raw-data-janjune-15_sample.csv")
| Dispatching_base_num | Pickup_date | Affiliated_base_num | locationID | |
|---|---|---|---|---|
| 0 | B02617 | 2015-05-02 21:43:00 | B02764 | 237 |
| 1 | B02682 | 2015-01-20 19:52:59 | B02682 | 231 |
| 2 | B02617 | 2015-03-19 20:26:00 | B02617 | 161 |
| 3 | B02764 | 2015-04-10 17:38:00 | B02764 | 107 |
| 4 | B02764 | 2015-03-23 07:03:00 | B00111 | 140 |
| ... | ... | ... | ... | ... |
| 99995 | B02764 | 2015-04-13 16:12:00 | B02764 | 234 |
| 99996 | B02764 | 2015-03-06 21:32:00 | B02764 | 24 |
| 99997 | B02598 | 2015-03-19 19:56:00 | B02598 | 17 |
| 99998 | B02682 | 2015-05-02 16:02:00 | B02682 | 68 |
| 99999 | B02764 | 2015-06-24 16:04:00 | B02764 | 125 |
100000 rows × 4 columns
uber_15 = pd.read_csv(r"C:\Users\lucas\general\cursos\09-python\01_data_analyst_python\01-project_NY_uber_stats\Datasets/uber-raw-data-janjune-15_sample.csv")
uber_15.shape
(100000, 4)
uber_15.duplicated()
0 False
1 False
2 False
3 False
4 False
...
99995 False
99996 False
99997 False
99998 False
99999 False
Length: 100000, dtype: bool
uber_15.duplicated().sum()
54
uber_15.drop_duplicates(inplace=True)
uber_15.duplicated().sum()
0
uber_15.shape
(99946, 4)
uber_15.dtypes
Dispatching_base_num object Pickup_date object Affiliated_base_num object locationID int64 dtype: object
uber_15.isnull().sum()
Dispatching_base_num 0 Pickup_date 0 Affiliated_base_num 1116 locationID 0 dtype: int64
type(uber_15['Pickup_date'][0])
str
pd.to_datetime(uber_15['Pickup_date'])
0 2015-05-02 21:43:00
1 2015-01-20 19:52:59
2 2015-03-19 20:26:00
3 2015-04-10 17:38:00
4 2015-03-23 07:03:00
...
99995 2015-04-13 16:12:00
99996 2015-03-06 21:32:00
99997 2015-03-19 19:56:00
99998 2015-05-02 16:02:00
99999 2015-06-24 16:04:00
Name: Pickup_date, Length: 99946, dtype: datetime64[ns]
uber_15['Pickup_date'] = pd.to_datetime(uber_15['Pickup_date'])
uber_15['Pickup_date'].dtype
dtype('<M8[ns]')
uber_15['Pickup_date'][0]
Timestamp('2015-05-02 21:43:00')
type(uber_15['Pickup_date'][0])
pandas._libs.tslibs.timestamps.Timestamp
uber_15.dtypes
Dispatching_base_num object Pickup_date datetime64[ns] Affiliated_base_num object locationID int64 dtype: object
uber_15['month'] = uber_15['Pickup_date'].dt.month_name()
uber_15['month'].value_counts().plot(kind='bar')
<Axes: >
uber_15['weekday'] = uber_15['Pickup_date'].dt.day_name()
uber_15['day'] = uber_15['Pickup_date'].dt.day
uber_15['hour'] = uber_15['Pickup_date'].dt.hour
uber_15['minute'] = uber_15['Pickup_date'].dt.minute
uber_15.head()
| Dispatching_base_num | Pickup_date | Affiliated_base_num | locationID | month | weekday | day | hour | minute | |
|---|---|---|---|---|---|---|---|---|---|
| 0 | B02617 | 2015-05-02 21:43:00 | B02764 | 237 | May | Saturday | 2 | 21 | 43 |
| 1 | B02682 | 2015-01-20 19:52:59 | B02682 | 231 | January | Tuesday | 20 | 19 | 52 |
| 2 | B02617 | 2015-03-19 20:26:00 | B02617 | 161 | March | Thursday | 19 | 20 | 26 |
| 3 | B02764 | 2015-04-10 17:38:00 | B02764 | 107 | April | Friday | 10 | 17 | 38 |
| 4 | B02764 | 2015-03-23 07:03:00 | B00111 | 140 | March | Monday | 23 | 7 | 3 |
pivot = pd.crosstab(index=uber_15['month'], columns=uber_15['weekday'])
pivot
| weekday | Friday | Monday | Saturday | Sunday | Thursday | Tuesday | Wednesday |
|---|---|---|---|---|---|---|---|
| month | |||||||
| April | 2365 | 1833 | 2508 | 2052 | 2823 | 1880 | 2521 |
| February | 2655 | 1970 | 2550 | 2183 | 2396 | 2129 | 2013 |
| January | 2508 | 1353 | 2745 | 1651 | 2378 | 1444 | 1740 |
| June | 2793 | 2848 | 3037 | 2485 | 2767 | 3187 | 2503 |
| March | 2465 | 2115 | 2522 | 2379 | 2093 | 2388 | 2007 |
| May | 3262 | 1865 | 3519 | 2944 | 2627 | 2115 | 2328 |
pivot.plot(kind='bar', figsize=(8,6))
<Axes: xlabel='month'>
summary = uber_15.groupby(['weekday', 'hour'], as_index=False).size()
summary
| weekday | hour | size | |
|---|---|---|---|
| 0 | Friday | 0 | 581 |
| 1 | Friday | 1 | 333 |
| 2 | Friday | 2 | 197 |
| 3 | Friday | 3 | 138 |
| 4 | Friday | 4 | 161 |
| ... | ... | ... | ... |
| 163 | Wednesday | 19 | 1044 |
| 164 | Wednesday | 20 | 897 |
| 165 | Wednesday | 21 | 949 |
| 166 | Wednesday | 22 | 900 |
| 167 | Wednesday | 23 | 669 |
168 rows × 3 columns
plt.figure(figsize=(8,6))
sns.pointplot(x='hour', y='size', hue="weekday", data=summary)
<Axes: xlabel='hour', ylabel='size'>
uber_15.columns
Index(['Dispatching_base_num', 'Pickup_date', 'Affiliated_base_num',
'locationID', 'month', 'weekday', 'day', 'hour', 'minute'],
dtype='object')
uber_foil = pd.read_csv(r"C:\Users\lucas\general\cursos\09-python\01_data_analyst_python\01-project_NY_uber_stats\Datasets/Uber-Jan-Feb-FOIL.csv")
uber_foil.head(3)
| dispatching_base_number | date | active_vehicles | trips | |
|---|---|---|---|---|
| 0 | B02512 | 1/1/2015 | 190 | 1132 |
| 1 | B02765 | 1/1/2015 | 225 | 1765 |
| 2 | B02764 | 1/1/2015 | 3427 | 29421 |
!pip install chart_studio
!pip install plotly
Collecting chart_studio
Downloading chart_studio-1.1.0-py3-none-any.whl (64 kB)
---------------------------------------- 64.4/64.4 kB 1.7 MB/s eta 0:00:00
Requirement already satisfied: plotly in c:\users\lucas\anaconda3\lib\site-packages (from chart_studio) (5.9.0)
Requirement already satisfied: requests in c:\users\lucas\anaconda3\lib\site-packages (from chart_studio) (2.28.1)
Requirement already satisfied: six in c:\users\lucas\anaconda3\lib\site-packages (from chart_studio) (1.16.0)
Collecting retrying>=1.3.3
Downloading retrying-1.3.4-py3-none-any.whl (11 kB)
Requirement already satisfied: tenacity>=6.2.0 in c:\users\lucas\anaconda3\lib\site-packages (from plotly->chart_studio) (8.0.1)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in c:\users\lucas\anaconda3\lib\site-packages (from requests->chart_studio) (1.26.14)
Requirement already satisfied: certifi>=2017.4.17 in c:\users\lucas\anaconda3\lib\site-packages (from requests->chart_studio) (2022.12.7)
Requirement already satisfied: idna<4,>=2.5 in c:\users\lucas\anaconda3\lib\site-packages (from requests->chart_studio) (3.4)
Requirement already satisfied: charset-normalizer<3,>=2 in c:\users\lucas\anaconda3\lib\site-packages (from requests->chart_studio) (2.0.4)
Installing collected packages: retrying, chart_studio
Successfully installed chart_studio-1.1.0 retrying-1.3.4
Requirement already satisfied: plotly in c:\users\lucas\anaconda3\lib\site-packages (5.9.0)
Requirement already satisfied: tenacity>=6.2.0 in c:\users\lucas\anaconda3\lib\site-packages (from plotly) (8.0.1)
import chart_studio.plotly as py
import plotly.graph_objs as go
import plotly.express as px
from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot
px.box(x='dispatching_base_number', y='active_vehicles', data_frame=uber_foil)
##agroup all csvs apr14.csv, aug14.csv, jul14.csv, etc
os.listdir(r"C:\Users\lucas\general\cursos\09-python\01_data_analyst_python\01-project_NY_uber_stats\Datasets")
['other-American_B01362.csv', 'other-Carmel_B00256.csv', 'other-Dial7_B00887.csv', 'other-Diplo_B01196.csv', 'other-Federal_02216.csv', 'other-FHV-services_jan-aug-2015.csv', 'other-Firstclass_B01536.csv', 'other-Highclass_B01717.csv', 'other-Lyft_B02510.csv', 'other-Prestige_B01338.csv', 'other-Skyline_B00111.csv', 'Uber-Jan-Feb-FOIL.csv', 'uber-raw-data-apr14.csv', 'uber-raw-data-aug14.csv', 'uber-raw-data-janjune-15.csv', 'uber-raw-data-janjune-15_sample.csv', 'uber-raw-data-jul14.csv', 'uber-raw-data-jun14.csv', 'uber-raw-data-may14.csv', 'uber-raw-data-sep14.csv']
files = os.listdir(r"C:\Users\lucas\general\cursos\09-python\01_data_analyst_python\01-project_NY_uber_stats\Datasets")[-8:]
files.remove('uber-raw-data-janjune-15.csv')
files
['uber-raw-data-apr14.csv', 'uber-raw-data-aug14.csv', 'uber-raw-data-janjune-15_sample.csv', 'uber-raw-data-jul14.csv', 'uber-raw-data-jun14.csv', 'uber-raw-data-may14.csv', 'uber-raw-data-sep14.csv']
files.remove('uber-raw-data-janjune-15_sample.csv')
files
['uber-raw-data-apr14.csv', 'uber-raw-data-aug14.csv', 'uber-raw-data-jul14.csv', 'uber-raw-data-jun14.csv', 'uber-raw-data-may14.csv', 'uber-raw-data-sep14.csv']
#concatenate files
finalDataframe = pd.DataFrame()
path = r'C:\Users\lucas\general\cursos\09-python\01_data_analyst_python\01-project_NY_uber_stats\Datasets'
for file in files :
current_df = pd.read_csv(path+'/'+file)
final = pd.concat([current_df, finalDataframe])
final.shape
(1028136, 4)
final.duplicated().sum()
24037
final.drop_duplicates(inplace=True)
final.shape
(1004099, 4)
final.head(3)
| Date/Time | Lat | Lon | Base | |
|---|---|---|---|---|
| 0 | 9/1/2014 0:01:00 | 40.2201 | -74.0021 | B02512 |
| 1 | 9/1/2014 0:01:00 | 40.7500 | -74.0027 | B02512 |
| 2 | 9/1/2014 0:03:00 | 40.7559 | -73.9864 | B02512 |
rush_uber = final.groupby(['Lat', 'Lon'], as_index=False).size()
rush_uber.head(5)
| Lat | Lon | size | |
|---|---|---|---|
| 0 | 39.9897 | -74.1423 | 1 |
| 1 | 40.0580 | -74.0847 | 1 |
| 2 | 40.0794 | -74.0456 | 1 |
| 3 | 40.0972 | -74.0877 | 1 |
| 4 | 40.1122 | -74.0480 | 1 |
!pip install folium
Collecting folium
Downloading folium-0.14.0-py2.py3-none-any.whl (102 kB)
-------------------------------------- 102.3/102.3 kB 2.0 MB/s eta 0:00:00
Requirement already satisfied: numpy in c:\users\lucas\anaconda3\lib\site-packages (from folium) (1.23.5)
Collecting branca>=0.6.0
Downloading branca-0.6.0-py3-none-any.whl (24 kB)
Requirement already satisfied: requests in c:\users\lucas\anaconda3\lib\site-packages (from folium) (2.28.1)
Requirement already satisfied: jinja2>=2.9 in c:\users\lucas\anaconda3\lib\site-packages (from folium) (3.1.2)
Requirement already satisfied: MarkupSafe>=2.0 in c:\users\lucas\anaconda3\lib\site-packages (from jinja2>=2.9->folium) (2.1.1)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in c:\users\lucas\anaconda3\lib\site-packages (from requests->folium) (1.26.14)
Requirement already satisfied: certifi>=2017.4.17 in c:\users\lucas\anaconda3\lib\site-packages (from requests->folium) (2022.12.7)
Requirement already satisfied: idna<4,>=2.5 in c:\users\lucas\anaconda3\lib\site-packages (from requests->folium) (3.4)
Requirement already satisfied: charset-normalizer<3,>=2 in c:\users\lucas\anaconda3\lib\site-packages (from requests->folium) (2.0.4)
Installing collected packages: branca, folium
Successfully installed branca-0.6.0 folium-0.14.0
import folium
basemap = folium.Map()
basemap
from folium.plugins import HeatMap
HeatMap(rush_uber).add_to(basemap)
<folium.plugins.heat_map.HeatMap at 0x19d5dd885e0>
basemap
final.columns
Index(['Date/Time', 'Lat', 'Lon', 'Base'], dtype='object')
final.head(3)
| Date/Time | Lat | Lon | Base | |
|---|---|---|---|---|
| 0 | 9/1/2014 0:01:00 | 40.2201 | -74.0021 | B02512 |
| 1 | 9/1/2014 0:01:00 | 40.7500 | -74.0027 | B02512 |
| 2 | 9/1/2014 0:03:00 | 40.7559 | -73.9864 | B02512 |
final.dtypes
Date/Time object Lat float64 Lon float64 Base object dtype: object
final['Date/Time'][0]
'9/1/2014 0:01:00'
final['Date/Time'] = pd.to_datetime(final['Date/Time'], format='%m/%d/%Y %H:%M:%S')
final['Date/Time'].dtype
dtype('<M8[ns]')
final['day'] = final['Date/Time'].dt.day
final['hour'] =final['Date/Time'].dt.hour
final.head(3)
| Date/Time | Lat | Lon | Base | Day | day | hour | |
|---|---|---|---|---|---|---|---|
| 0 | 2014-09-01 00:01:00 | 40.2201 | -74.0021 | B02512 | 1 | 1 | 0 |
| 1 | 2014-09-01 00:01:00 | 40.7500 | -74.0027 | B02512 | 1 | 1 | 0 |
| 2 | 2014-09-01 00:03:00 | 40.7559 | -73.9864 | B02512 | 1 | 1 | 0 |
pivot_table = final.groupby(['day', 'hour']).size().unstack()
pivot_table.style.background_gradient()
| hour | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| day | ||||||||||||||||||||||||
| 1 | 682.000000 | 480.000000 | 356.000000 | 329.000000 | 260.000000 | 278.000000 | 327.000000 | 416.000000 | 551.000000 | 748.000000 | 851.000000 | 967.000000 | 1001.000000 | 1102.000000 | 1199.000000 | 1324.000000 | 1452.000000 | 1319.000000 | 1234.000000 | 1229.000000 | 1157.000000 | 1027.000000 | 794.000000 | 498.000000 |
| 2 | 204.000000 | 108.000000 | 81.000000 | 288.000000 | 511.000000 | 843.000000 | 1241.000000 | 1565.000000 | 1689.000000 | 1229.000000 | 1132.000000 | 1110.000000 | 1170.000000 | 1256.000000 | 1375.000000 | 1677.000000 | 2009.000000 | 2099.000000 | 1920.000000 | 1725.000000 | 1732.000000 | 1485.000000 | 1106.000000 | 684.000000 |
| 3 | 278.000000 | 150.000000 | 113.000000 | 200.000000 | 351.000000 | 744.000000 | 1359.000000 | 1633.000000 | 1640.000000 | 1372.000000 | 1213.000000 | 1157.000000 | 1186.000000 | 1343.000000 | 1603.000000 | 1997.000000 | 2290.000000 | 2414.000000 | 2329.000000 | 2136.000000 | 2172.000000 | 1886.000000 | 1543.000000 | 898.000000 |
| 4 | 484.000000 | 263.000000 | 177.000000 | 244.000000 | 374.000000 | 744.000000 | 1336.000000 | 1707.000000 | 1770.000000 | 1428.000000 | 1363.000000 | 1369.000000 | 1385.000000 | 1510.000000 | 1828.000000 | 2285.000000 | 2441.000000 | 2674.000000 | 3012.000000 | 2740.000000 | 2568.000000 | 2388.000000 | 2033.000000 | 1384.000000 |
| 5 | 634.000000 | 359.000000 | 229.000000 | 298.000000 | 456.000000 | 806.000000 | 1302.000000 | 1677.000000 | 1824.000000 | 1578.000000 | 1456.000000 | 1399.000000 | 1415.000000 | 1675.000000 | 2020.000000 | 2279.000000 | 2601.000000 | 2899.000000 | 3087.000000 | 3099.000000 | 2683.000000 | 2727.000000 | 2702.000000 | 2252.000000 |
| 6 | 1664.000000 | 1092.000000 | 690.000000 | 466.000000 | 340.000000 | 337.000000 | 516.000000 | 696.000000 | 942.000000 | 1068.000000 | 1259.000000 | 1440.000000 | 1563.000000 | 1828.000000 | 2098.000000 | 2365.000000 | 2528.000000 | 2717.000000 | 2802.000000 | 2686.000000 | 2369.000000 | 2657.000000 | 2975.000000 | 2597.000000 |
| 7 | 1794.000000 | 1219.000000 | 805.000000 | 556.000000 | 328.000000 | 352.000000 | 382.000000 | 555.000000 | 801.000000 | 1006.000000 | 1207.000000 | 1356.000000 | 1459.000000 | 1604.000000 | 1764.000000 | 1944.000000 | 2091.000000 | 1995.000000 | 1865.000000 | 1662.000000 | 1574.000000 | 1410.000000 | 1135.000000 | 622.000000 |
| 8 | 321.000000 | 199.000000 | 155.000000 | 365.000000 | 508.000000 | 897.000000 | 1194.000000 | 1646.000000 | 1692.000000 | 1272.000000 | 1175.000000 | 1190.000000 | 1162.000000 | 1313.000000 | 1547.000000 | 1855.000000 | 2054.000000 | 2203.000000 | 2171.000000 | 1926.000000 | 1782.000000 | 1453.000000 | 1090.000000 | 583.000000 |
| 9 | 305.000000 | 192.000000 | 145.000000 | 239.000000 | 398.000000 | 807.000000 | 1410.000000 | 1745.000000 | 1751.000000 | 1305.000000 | 1263.000000 | 1258.000000 | 1287.000000 | 1600.000000 | 1986.000000 | 2191.000000 | 2195.000000 | 2559.000000 | 2618.000000 | 2329.000000 | 2130.000000 | 1875.000000 | 1393.000000 | 838.000000 |
| 10 | 421.000000 | 304.000000 | 177.000000 | 233.000000 | 392.000000 | 775.000000 | 1314.000000 | 1635.000000 | 1734.000000 | 1401.000000 | 1252.000000 | 1373.000000 | 1338.000000 | 1520.000000 | 1778.000000 | 2162.000000 | 2404.000000 | 2711.000000 | 2780.000000 | 2512.000000 | 2371.000000 | 2020.000000 | 1609.000000 | 884.000000 |
| 11 | 472.000000 | 289.000000 | 182.000000 | 274.000000 | 440.000000 | 317.000000 | 1015.000000 | 1518.000000 | 1698.000000 | 1369.000000 | 1220.000000 | 1301.000000 | 1306.000000 | 1538.000000 | 1860.000000 | 2144.000000 | 2526.000000 | 2779.000000 | 2837.000000 | 2662.000000 | 2491.000000 | 2372.000000 | 1774.000000 | 1195.000000 |
| 12 | 590.000000 | 382.000000 | 257.000000 | 324.000000 | 469.000000 | 797.000000 | 1245.000000 | 1622.000000 | 1698.000000 | 1352.000000 | 1324.000000 | 1247.000000 | 1286.000000 | 1516.000000 | 1681.000000 | 2017.000000 | 2276.000000 | 2629.000000 | 2849.000000 | 2829.000000 | 2490.000000 | 2650.000000 | 2715.000000 | 2362.000000 |
| 13 | 1772.000000 | 1184.000000 | 764.000000 | 517.000000 | 360.000000 | 400.000000 | 479.000000 | 648.000000 | 912.000000 | 1032.000000 | 1271.000000 | 1425.000000 | 1483.000000 | 1739.000000 | 2659.000000 | 2982.000000 | 2950.000000 | 2942.000000 | 3347.000000 | 3240.000000 | 2546.000000 | 2568.000000 | 2533.000000 | 2416.000000 |
| 14 | 1772.000000 | 1233.000000 | 855.000000 | 540.000000 | 360.000000 | 379.000000 | 405.000000 | 547.000000 | 748.000000 | 942.000000 | 1094.000000 | 1325.000000 | 1283.000000 | 1472.000000 | 1548.000000 | 1746.000000 | 1851.000000 | 1825.000000 | 1759.000000 | 1586.000000 | 1488.000000 | 1212.000000 | 990.000000 | 496.000000 |
| 15 | 251.000000 | 167.000000 | 151.000000 | 335.000000 | 554.000000 | 861.000000 | 1328.000000 | 1656.000000 | 1666.000000 | 1223.000000 | 1010.000000 | 1029.000000 | 1033.000000 | 1249.000000 | 1417.000000 | 1734.000000 | 2133.000000 | 2292.000000 | 2106.000000 | 1865.000000 | 1801.000000 | 1347.000000 | 995.000000 | 556.000000 |
| 16 | 264.000000 | 134.000000 | 123.000000 | 212.000000 | 367.000000 | 774.000000 | 1627.000000 | 2254.000000 | 2458.000000 | 1975.000000 | 1766.000000 | 1334.000000 | 1223.000000 | 1364.000000 | 1711.000000 | 2078.000000 | 2479.000000 | 2668.000000 | 2517.000000 | 2224.000000 | 2067.000000 | 1740.000000 | 1209.000000 | 639.000000 |
| 17 | 360.000000 | 200.000000 | 154.000000 | 253.000000 | 429.000000 | 758.000000 | 1515.000000 | 1915.000000 | 1632.000000 | 1248.000000 | 1206.000000 | 1166.000000 | 1279.000000 | 1515.000000 | 1728.000000 | 2103.000000 | 2468.000000 | 2687.000000 | 2683.000000 | 2454.000000 | 2413.000000 | 2114.000000 | 1572.000000 | 816.000000 |
| 18 | 401.000000 | 232.000000 | 158.000000 | 266.000000 | 443.000000 | 833.000000 | 1403.000000 | 1869.000000 | 1787.000000 | 1324.000000 | 1259.000000 | 1299.000000 | 1265.000000 | 1564.000000 | 1817.000000 | 2220.000000 | 2609.000000 | 3064.000000 | 3139.000000 | 3121.000000 | 2800.000000 | 2776.000000 | 2212.000000 | 1449.000000 |
| 19 | 641.000000 | 421.000000 | 261.000000 | 362.000000 | 460.000000 | 761.000000 | 1359.000000 | 1752.000000 | 1716.000000 | 1353.000000 | 1295.000000 | 1279.000000 | 1319.000000 | 1524.000000 | 1861.000000 | 2211.000000 | 2449.000000 | 2822.000000 | 3134.000000 | 2878.000000 | 2565.000000 | 2693.000000 | 2639.000000 | 2252.000000 |
| 20 | 1657.000000 | 1126.000000 | 703.000000 | 488.000000 | 379.000000 | 367.000000 | 538.000000 | 730.000000 | 886.000000 | 1089.000000 | 1231.000000 | 1387.000000 | 1482.000000 | 1619.000000 | 1910.000000 | 2087.000000 | 2374.000000 | 2581.000000 | 2595.000000 | 2587.000000 | 2387.000000 | 2461.000000 | 2590.000000 | 2539.000000 |
| 21 | 2393.000000 | 1976.000000 | 1141.000000 | 570.000000 | 372.000000 | 391.000000 | 423.000000 | 545.000000 | 708.000000 | 917.000000 | 1097.000000 | 1224.000000 | 1320.000000 | 1442.000000 | 1507.000000 | 1532.000000 | 1650.000000 | 1625.000000 | 1647.000000 | 1503.000000 | 1349.000000 | 1197.000000 | 917.000000 | 565.000000 |
| 22 | 270.000000 | 163.000000 | 146.000000 | 335.000000 | 533.000000 | 918.000000 | 1321.000000 | 1633.000000 | 1562.000000 | 1156.000000 | 1109.000000 | 1044.000000 | 1020.000000 | 1175.000000 | 1361.000000 | 1603.000000 | 1836.000000 | 1898.000000 | 1891.000000 | 1758.000000 | 1707.000000 | 1503.000000 | 1048.000000 | 638.000000 |
| 23 | 320.000000 | 171.000000 | 121.000000 | 222.000000 | 377.000000 | 826.000000 | 1387.000000 | 1703.000000 | 1449.000000 | 1168.000000 | 1050.000000 | 1031.000000 | 1005.000000 | 1173.000000 | 1437.000000 | 1680.000000 | 1882.000000 | 2132.000000 | 2282.000000 | 2215.000000 | 2020.000000 | 1814.000000 | 1373.000000 | 729.000000 |
| 24 | 404.000000 | 217.000000 | 140.000000 | 264.000000 | 415.000000 | 786.000000 | 1370.000000 | 1697.000000 | 1499.000000 | 1212.000000 | 1146.000000 | 1207.000000 | 1095.000000 | 1317.000000 | 1609.000000 | 1871.000000 | 2071.000000 | 2244.000000 | 2225.000000 | 1955.000000 | 1961.000000 | 1773.000000 | 1308.000000 | 733.000000 |
| 25 | 374.000000 | 226.000000 | 175.000000 | 282.000000 | 430.000000 | 795.000000 | 1688.000000 | 2494.000000 | 2240.000000 | 2070.000000 | 1702.000000 | 1637.000000 | 1541.000000 | 1588.000000 | 1729.000000 | 2015.000000 | 2348.000000 | 2508.000000 | 2449.000000 | 2176.000000 | 1993.000000 | 2049.000000 | 1686.000000 | 1023.000000 |
| 26 | 590.000000 | 340.000000 | 234.000000 | 333.000000 | 394.000000 | 665.000000 | 1139.000000 | 1484.000000 | 1305.000000 | 1202.000000 | 1154.000000 | 1176.000000 | 1228.000000 | 1377.000000 | 1690.000000 | 1990.000000 | 2243.000000 | 2561.000000 | 2943.000000 | 2715.000000 | 2383.000000 | 2618.000000 | 2480.000000 | 2294.000000 |
| 27 | 1654.000000 | 1197.000000 | 736.000000 | 514.000000 | 355.000000 | 412.000000 | 514.000000 | 664.000000 | 852.000000 | 1070.000000 | 1242.000000 | 1412.000000 | 1432.000000 | 1662.000000 | 1832.000000 | 2167.000000 | 2368.000000 | 2478.000000 | 2704.000000 | 2602.000000 | 2302.000000 | 2776.000000 | 2846.000000 | 2633.000000 |
| 28 | 2032.000000 | 1382.000000 | 954.000000 | 640.000000 | 410.000000 | 471.000000 | 435.000000 | 575.000000 | 786.000000 | 971.000000 | 1195.000000 | 1456.000000 | 1440.000000 | 1558.000000 | 1710.000000 | 1784.000000 | 1879.000000 | 1766.000000 | 1744.000000 | 1523.000000 | 1384.000000 | 1228.000000 | 991.000000 | 610.000000 |
| 29 | 318.000000 | 170.000000 | 147.000000 | 373.000000 | 564.000000 | 856.000000 | 1364.000000 | 1716.000000 | 1646.000000 | 1368.000000 | 1090.000000 | 1107.000000 | 1058.000000 | 1269.000000 | 1445.000000 | 1654.000000 | 1833.000000 | 1914.000000 | 2012.000000 | 1749.000000 | 1689.000000 | 1468.000000 | 1074.000000 | 594.000000 |
| 30 | 285.000000 | 161.000000 | 125.000000 | 227.000000 | 404.000000 | 849.000000 | 1548.000000 | 1975.000000 | 1811.000000 | 1248.000000 | 1158.000000 | 1187.000000 | 1140.000000 | 1496.000000 | 1661.000000 | 2071.000000 | 2315.000000 | 2611.000000 | 2554.000000 | 2347.000000 | 2190.000000 | 1913.000000 | 1317.000000 | nan |